package org.command.main.CS3;


import sun.rmi.runtime.Log;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class DbServer {
    private static final List<Contact> contacts = new ArrayList<>();
    static {
        contacts.add(new Contact("John Doe", "123 Main St", "555-1234"));
        contacts.add(new Contact("Tom", "123 456Main St", "fe234-1234"));
    }
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(4000); // 启动数据库服务器
            System.out.println("等待应用服务器连接...");

            while (true) {
                Socket appServerSocket = serverSocket.accept(); // 接受应用服务器连接
                System.out.println("应用服务器连接来自: " + appServerSocket.getInetAddress());

                BufferedReader appServerIn = new BufferedReader(new InputStreamReader(appServerSocket.getInputStream()));
                PrintWriter appServerOut = new PrintWriter(appServerSocket.getOutputStream(), true);

                String request = appServerIn.readLine(); // 从应用服务器获取请求

                if ("QUERY".equals(request)) {
                    // 查询联系人信息（模拟数据）
                    appServerOut.println(contacts);
                } else if ("ADD".equals(request)) {
                    // 处理添加联系人的逻辑
                    // 继续实现添加联系人的代码
                    String newContactString = appServerIn.readLine();
                    Contact newContact = Contact.fromString(newContactString);

                    // 添加新联系人到联系人列表
                    contacts.add(newContact);
                    appServerOut.println("联系人已添加");
                } else if ("UPDATE".equals(request)) {
                    // 处理更新联系人信息的逻辑
                    // 继续实现更新联系人信息的代码
                } else if ("DELETE".equals(request)) {
                    // 处理删除联系人的逻辑
                    // 继续实现删除联系人的代码
                } else {
                    appServerOut.println("无效请求");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
